c语言的位运算符学习笔记

按位取反运算符~

每位的值取反

~(10010110) = 01101001

 

按位与运算符&

对应位只有2个操作数都为1结果才为1

(10001011)&(10111101)=10001001

用法:取掩码

我们经常会看到代码中有

a & 0xff

  

就是将低16位之外的位全部置0,仅保留低16位的值

 

按位或运算符|

对应位只要有1个操作数为1结果就为1

(10001011)|(10111101)=10111111

用法:打开位

譬如MASK = 0x00000100
任意值 rand |= MASK 其实就是将从低位开始第三位设置成1,其它位保持不变

 

按位异或运算符^

对应位相同则为0,不相同结果为1

(10001011)^(10111101)=00110110

用法:转置位

 

移位运算符

左移位<<

每一位向左移x位

例如:

a = 0x00000001
a<<2
这时a = 0x00000100

右移位>>

类似左移位

 

 

posted @ 2012-12-10 13:36  天空的凝望  阅读(181)  评论(0编辑  收藏  举报